package com.example.mapper;

import com.example.pojo.Orders;
import com.example.vo.OrderUser;
import com.mysql.cj.x.protobuf.MysqlxCrud;

import java.util.List;
import java.util.Map;

public interface OrdersMapper {

    //查询所有订单的方法，不关联其它表
     List<Orders> selectAllOrders();

    int deleteByPrimaryKey(Integer orderId);

    int insert(Orders record);

    int insertSelective(Orders record);

    Orders selectByPrimaryKey(Integer orderId);

    int updateByPrimaryKeySelective(Orders record);

    int updateByPrimaryKey(Orders record);

    //从订单出发关联查询用户信息
    //查询所有订单及用户信息:分析数据结构  每一条数据中既有订单数据又有用户数据
    //所以重新定义一个类：OrderUser.java

    List<OrderUser> findOrderWithUser();

    //第二种实现方式
    List<Orders> findOrderWithUser2();


    //查询所有订单信息及订单下的订单明细信息
    //分析数据结构：每一条数据既有订单数据又有订单详情数据
    //第一种实现方式：在订单类中关联订单详情类
    List<Orders> findOrderWithOrderdetailet();

    List<Orders> findOrdersByUserId(int userId);


    /*
    limit：  0，5   从第一条数据开始  检索5行数据      请求的是第一页数据   1
    limit:   5，5                                                    2
    limit：   10，5                                                    3

    想象一下：前端传给我们的一般是哪些分页相关的参数：  第几页 pageNum   每页显示几条数据  pageSize
    推导一下后端需要的值：limit后面需要的值
    第一个值公式：（pageNum-1）*pageSize
    第二个值：  pageSize


    第一页数据：
    <==        Row: 1, 1, 2021-11-10 13:42:22, 10000.00, 1, 1, 1, 1, 10
    <==        Row: 1, 1, 2021-11-10 13:42:22, 10000.00, 1, 1, 2, 2, 3

    <==        Row: 11, 3, 2022-06-28 16:03:59, 3000.00, 5, 1, 3, 3, 10
    <==        Row: 11, 3, 2022-06-28 16:03:59, 3000.00, 5, 1, 4, 4, 2

    <==        Row: 15, 4, 2022-09-16 11:38:35, 312.00, 1, 1, 5, 4, 1
    <==        Row: 15, 4, 2022-09-16 11:38:35, 312.00, 1, 1, 6, 3, 1

     */

    //案例：查询所有订单信息及订单下的订单明细信息，进行分页查询
    List<Orders> findOrderWithOrderdetailetWithPage(Map<String,Object> map);


    //案例：查询订单关联查询用户数据   启用懒加载
    List<Orders> findOrderLazyloadUser();



}